In some hosted computing environments, software is hosted by servers or other computing devices. When new versions, updates, or patches for the hosted software are available, the software hosted at each of the servers or other devices may need to be updated or replaced. The updating of the servers or other devices may be completed manually and can consume large amounts of resources.
Additionally, complex operations may be required to update the hosted software, since various hosted components may work together to provide the hosted software. For example, hosted software may make use of various host resources that coordinate various operations executed independently to provide the functionality associated with the hosted software. Thus, while the host resources may rely upon one another during execution of the software, each of the host resources may be updated independently.
Furthermore, because of the above-mentioned interdependencies of the host software components, the operations executed to update the hosted software may need to be executed in a particular order to properly deploy the updates. In particular, because the host resources may rely upon one another, but also may be independently updated, failures or other errors experienced in any of the software updates may jeopardize performance of the updated software. Thus, a particular component of the hosted software may be updated and verified via manually controlled processes before updating a next component of the software to attempt to ensure that performance of the hosted software is not impacted negatively. Because hosted software may evolve and may be updated at a rapid pace, these resource-intensive update processes can be difficult to accommodate.
Another challenge experienced by software developers is that if errors are experienced in the upgraded application, the application may affect the entire update process or can affect performance of the software. Rolling back upgrades in the event of errors or performance issues can be difficult in some circumstances, and may require taking the hosted software offline. Thus, rollback of the software updates can require similarly resource- and time-consuming processes. As such, errors or other performance issues experienced during or after updating hosted software can be expensive to repair and/or can seriously affect the user experience with the application.
It is with respect to these and other considerations that the disclosure made herein is presented.